package net.suplementos.web.action;

import net.suplementos.negocio.ControleDelegate;
import net.suplementos.pojo.Fornecedor;
import net.suplementos.pojo.Produto;
import net.suplementos.servico.ControleServico;
import net.suplementos.web.LocalConstantes;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/associarFornecedorProduto")
@InterceptorRefs({
	@InterceptorRef(value = "store", params = {"operationMode", "AUTOMATIC"}),
	@InterceptorRef("defaultStack")
})
public class AssociarFornecedorProdutoAction extends ActionSupport {
	
	private Produto produto;
	private Fornecedor fornecedor;
	private ControleServico controleServico = ControleDelegate.getInstance();

	@Action(value = "abrirAssociarDesassociar", results = {
		@Result(name = SUCCESS, location = LocalConstantes.LOCAL_JSP_CONTROLE_ASSOCIAR_FORNECEDOR_PRODUTO + "/associar.jsp") 
	})
    public String abrirAssociarDesassociar() throws Exception {
        return SUCCESS;
    }

	@Action(value = "consultarProduto", results = {
		@Result(name = SUCCESS, location = LocalConstantes.LOCAL_JSP_CONTROLE_ASSOCIAR_FORNECEDOR_PRODUTO + "/associar.jsp") 
	})
	public String consultarProduto() throws Exception {
		return SUCCESS;
	}

	@Action(value = "associar", results = {
		@Result(name = SUCCESS, params = {"actionName", "consultarProduto"}, type = "redirectAction") 
	})
	public String associar() throws Exception {
		addActionMessage(getText("associar.fornecedor.mensagem.sucesso", new String[]{"Produto"}));
		controleServico.associarFornecedorProduto(getFornecedor(), getProduto());
		return SUCCESS;
	}

	@Action(value = "desassociar", results = {
		@Result(name = SUCCESS, params = {"actionName", "consultarProduto"}, type = "redirectAction") 
	})
	public String desassociar() throws Exception {
		addActionMessage(getText("desassociar.fornecedor.mensagem.sucesso", new String[]{"Produto"}));
		controleServico.desassociarFornecedorProduto(getFornecedor(), getProduto());
		return SUCCESS;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Fornecedor getFornecedor() {
		return fornecedor;
	}

	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}

	public ControleServico getControleServico() {
		return controleServico;
	}

	public void setControleServico(ControleServico controleServico) {
		this.controleServico = controleServico;
	}
}
